# 深浅拷贝
# 赋值
li = [1,2,3,4,5]
li2 = li
print(li)
print(li2)
li.append(6)
print(li,id(li))
print(li2,id(li2))

# 浅拷贝
# 会创建新的对象，拷贝第一层的数据，嵌套层会指向原来的内存地址
import copy # 倒入copy模块
li = [1,2,3,4,5,[6,7,8]]
li2 = copy.copy(li)
print(li,id(li))
print(li2,id(li2))

print(id(li[4]))
print(id(li2[4]))

#优点 拷贝速度快，占用空间少，拷贝效率高


# 深拷贝
# 数据完全不共享
li3 = copy.deepcopy(li)
li.append(7)
print(li,id(li))
print(li3,id(li3))

# 可变类型
# 含义：变量对应的值可以修改，但内存地址不变
# 列表，字典，集合
li = [1,2,3,4,5]
print(id(li))
li.insert(6,6)
print(li,id(li))

# 常见不可见类型
# 数值类型:int,bool,float,complex
# 字符串 str
# 元组: tuple
# 深浅拷贝只针对可变对象
